//
//  HSMessListViewModel.swift
//  HomeSchoolDemo
//
//  Created by rimi on 16/10/10.
//  Copyright © 2016年 赖虹宇. All rights reserved.
//

import UIKit



//定义闭包类型
typealias callback = (_ error: Error? , _ isRefresh:Bool) -> ()

class HSMessListViewModel{
   //模型数组
    var messages:[HSMessageViewModel] = []
    
    //请求数据
    func requestMessage(loadType:LoadType ,finished:@escaping callback){
        //开始网络请求
        //接口地址
        let url = "ZH-schoolname-S-getJXNotification"
       
        //获得当前最小的通知ID
        let minID = messages.last?.message.not_id ?? 0
        //根据刷新类型来获得通知的ID
        let id = (loadType == .drop) ? 0 : minID
        //根据刷新类型来获得通知的ID
        let loType = (loadType == .drop) ? 1 : 2
        
        //参数
        let key = userInfo["key"] as! String
        let parame = ["key":key,"id":id,"load_type":loType] as [String : Any]
        
        HSNetwordTools.shared.downloadData(urlStr: url, parameters: parame) { [weak self](data, error) in
            guard let data = data as? NSDictionary else{
                HSAlertView.bottomAlertView("网络无连接，请检查网络")
                finished(error, false)
                return
            }
            //            print(data,error)
            //判断返回数据的正确性
            switch data["result"] as! Int{
            case 0 :
                //                print(data["data"])
                //字典转模型
                //获得字典数组
                let dictArray = data["data"] as! [[String:Any]]
                //创建一个保存模型的数组
                var modelArray = [HSMessageViewModel]()
                //循环
                for dict in dictArray{
                    //创建一个模型对象
                    let message = HSMessageModel(dict: dict)
                    //获得模型中的回复数据数组
                    if let replayArray = message.replaylist {
                        //创建可变保存回复数据模型的数组
                        var replayModelArr = [HSReplayListModel]()
                        for replayDict in replayArray {
                            //实例化一个回复模型
                            let replayModel = HSReplayListModel(dict: replayDict as! [String : Any])
                            //添加到回复模型数组中
                            replayModelArr.append(replayModel)
                        }
                        //重新将转换好的回复模型数组赋值给消息模型
                        message.replaylist = replayModelArr
                    }
                    //添加到消息模型数组中
                    modelArray.append(HSMessageViewModel(model: message))
                }
                //赋值
                //根据刷新类型来判断数据的添加方式
                //下拉的时候是覆盖原有数据
                //上拉的时候是将新获得数据添加到已有数据的后面
                if loadType == .drop {
                self?.messages = modelArray
                }else{
                    self?.messages += modelArray
                }
                //刷新视图--数据正常处理完成后刷新视图
                finished(nil, true)
            case 1 :
                HSAlertView.bottomAlertView("已经没有更早的数据了")
                //网络正常，但是数据加载失败，通知控制器不需要刷新视图
                finished(nil, false)
            default:
                break
            }
        }

    }
    
}
